import os
import sys
BASE_DIR = os.path.dirname(__file__) if not getattr(
    sys, 'frozen', False) else os.path.dirname(sys.executable)
RESULTS_DIR = os.path.join(BASE_DIR, r'results')
FILES_DIR = os.path.join(BASE_DIR, r'files')


def makedirs():
    if not os.path.exists(os.path.join(BASE_DIR, RESULTS_DIR)):
        os.mkdir(RESULTS_DIR)


CONSTANTS = {
    'V_E_L': 110,
    'V_E_B': 80,
    'A_MAX_L': 0.50,  # 小客车最大加速度(m/s^2)
    'A_MIN_L': 0.15,  # 小客车最小加速度(m/s^2)
    'A_MAX_B': 0.25,  # 大货车最大加速度(m/s^2)
    'A_MIN_B': 0.20,  # 大货车最小加速度(m/s^2)
    'V_0_L': 80,  # 小客车初始速度
    'V_0_B': 65,  # 大货车初始速度
    'V_MIN_L': 50,  # 小客车最低速度
    'V_MIN_B': 30,  # 大货车最低速度
    'LINE_RADIUS': 100000
}


def change_design_velocity(v, level=None):
    level = 1 if level is None else level
    if v is None:
        return
    constants_1 = {
        120: {
            'V_0_L': 120,
            'V_0_B': 80,
            'V_E_L': 120,
            'V_E_B': 80
        },
        100: {
            'V_0_L': 100,
            'V_0_B': 75,
            'V_E_L': 120,
            'V_E_B': 80
        },
        80: {
            'V_0_L': 80,
            'V_0_B': 65,
            'V_E_L': 110,
            'V_E_B': 80
        },
        60: {
            'V_0_L': 60,
            'V_0_B': 50,
            'V_E_L': 90,
            'V_E_B': 75
        }
    }
    constants_2 = {
        80: {
            'V_0_L': 80,
            'V_0_B': 60,
            'V_E_L': 105,
            'V_E_B': 75
        },
        60: {
            'V_0_L': 60,
            'V_0_B': 40,
            'V_E_L': 85,
            'V_E_B': 70
        },
        40: {
            'V_0_L': 40,
            'V_0_B': 30,
            'V_E_L': 65,
            'V_E_B': 50
        }
    }
    try:
        if level == 1:
            CONSTANTS.update(constants_1[v])
        else:
            CONSTANTS.update(constants_2[v])
    except KeyError as e:
        print(f'设计速度错误：{v}')
        raise e
